home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.BorderLayout;
- import java.awt.Button;
- import java.awt.Checkbox;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.FlowLayout;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Label;
- import java.awt.Panel;
- import java.awt.TextField;
- import java.io.BufferedInputStream;
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.util.StringTokenizer;
-
- public class SearchToHTML extends Applet implements Runnable {
- private static final String version = "SearchToHTML 2.15 August 23, 2001";
- private static final String description = "A client-side search engine that displays its search results as HTML.";
- private static final String author = "David Faden <gilbertnews@hotmail.com>";
- private static String appletInfo = "SearchToHTML 2.15 August 23, 2001" + System.getProperty("line.separator") + "David Faden <gilbertnews@hotmail.com>" + System.getProperty("line.separator") + "A client-side search engine that displays its search results as HTML.";
- private static String[][] parameterInfo = new String[][]{{"files", "url list", "documents to search"}, {"target", "string", "target frame for search results"}, {"contextsize", "integer", "size of context including match (deprecated)"}, {"leadingcontextlength", "integer", "size of leading context, including match"}, {"trailingcontextlength", "integer", "size of trailing context"}, {"max_num_matches", "integer", "maximum number of results"}, {"resultspage", "url", "search results receiver/displayer"}, {"waitforall", "boolean", "display results as received (deprecated)"}, {"search_btn_txt", "string", "text for \"search\" button"}, {"stop_btn_txt", "string", "text for \"stop\" button"}, {"xhtml_chkbx_txt", "string", "text for \"Exclude HTML\" checkbox"}, {"exact_chkbx_txt", "string", "text for \"Exact matches only\" checkbox"}, {"searchbox_label_txt", "string", "label for search box"}, {"bgcolor", "color", "applet background color"}, {"fgcolor", "color", "applet foreground color"}, {"searchboxbgcolor", "color", "search box background color"}, {"searchboxfgcolor", "color", "search box foreground color"}, {"startwords", "string", "initial text of search box"}, {"buttonbgcolor", "color", "button background color"}, {"buttonfgcolor", "color", "button foreground color"}, {"hide_exact_chkbx", "boolean", "hide \"Exact matches only\" checkbox"}, {"hide_xhtml_chkbx", "boolean", "hide \"Exclude HTML\" checkbox"}, {"checkboxbgcolor", "color", "checkbox background color"}, {"checkboxfgcolor", "color", "checkbox foreground color"}, {"ignore_tags", "boolean", "ignore tags"}, {"xhtml_chkbx_checked", "boolean", "check \"Exclude HTML\" checkbox (deprecated)"}, {"exact_matches_only", "boolean", "accept exact matches only"}, {"exact_chkbx_checked", "boolean", "check \"Exact matches only\" checkbox (deprecated)"}, {"hide_progress_bar", "boolean", "hide progress bar"}, {"progress_bar_completed_color", "color", "color for completion"}, {"progress_bar_remaining_color", "color", "color for remaining"}, {"progress_bar_text_color", "color", "color for progress bar text"}, {"progress_bar_message", "string", "progress bar message"}, {"hide_button", "boolean", "hide search/stop button"}, {"hide_searchbox_label", "boolean", "hide search box label"}, {"progress_bar_height", "integer", "height of progress bar"}, {"hide_progress_bar_message", "boolean", "hide progress bar message"}, {"progress_bar_width", "integer", "width of progress bar"}, {"searchbox_size", "integer", "search box column width"}, {"send_context", "boolean", "send context"}, {"send_titles", "boolean", "send titles"}, {"send_info", "boolean", "send info"}, {"send_anchors", "boolean", "send anchors"}, {"phrase_searches_only", "boolean", "phrase searches only"}, {"start_pattern", "string", "start searching on match"}, {"stop_pattern", "string", "stop searching on match"}, {"files_file", "string", "file containing list of files to search"}, {"match_all_terms", "boolean", "must all terms match"}, {"show_match_all_terms_checkbox", "boolean", "hide match all terms checkbox"}, {"match_all_terms_checkbox_txt", "string", "text of the match terms checkbox"}};
- private SearchDocument[] documents;
- private int numberOfDocuments;
- private int maxNumOfMatches;
- private Button stopStartButton;
- private Checkbox ignoreTagsCheckbox;
- private Checkbox exactCheckbox;
- private Checkbox matchAllTermsCheckbox;
- private TextField searchBox;
- private ProgressBar progressBar;
- private boolean displayProgressBar;
- private boolean progressBarHasBeenUsed;
- private Insets insets = new Insets(2, 2, 2, 2);
- private String target;
- private boolean displayMessage;
- private String message;
- private static final String searchTokenSeparators = "\" \t\r\n,";
- private String resultsPage;
- private boolean sendContext;
- private boolean sendTitles;
- private boolean sendDocumentInfo;
- private boolean sendAnchors;
- private boolean phraseSearchesOnly;
- private boolean waitForAll;
- private String searchBase;
- private boolean searching = false;
- private String search_btn_txt;
- private String stop_btn_txt;
- private Frame frame;
- private Thread searchThread;
- public static final boolean DEBUG = false;
-
- public void init() {
- URL var1 = ((Applet)this).getDocumentBase();
- this.searchBase = var1.getProtocol() + "://" + var1.getHost() + var1.getFile();
- int var2 = this.searchBase.lastIndexOf(47);
- int var3 = this.searchBase.lastIndexOf(46);
- if (var3 > var2) {
- this.searchBase = this.searchBase.substring(0, var2 + 1);
- }
-
- int var4 = 15;
- String var5 = ((Applet)this).getParameter("contextsize");
- if (var5 == null) {
- var5 = ((Applet)this).getParameter("leadingcontextlength");
- }
-
- if (var5 != null) {
- try {
- var4 = Integer.parseInt(var5);
- if (var4 < 0) {
- var4 = 0;
- }
- } catch (NumberFormatException var70) {
- System.err.println(" Problem with contextsize/leadingcontextlength parameter.");
- ((Throwable)var70).printStackTrace();
- }
- }
-
- int var6 = 0;
- String var7 = ((Applet)this).getParameter("trailingcontextlength");
- if (var7 != null) {
- try {
- var6 = Integer.parseInt(var7);
- if (var6 < 0) {
- var6 = 0;
- }
- } catch (NumberFormatException var69) {
- System.err.println(" Invalid value for trailingcontextlength parameter.");
- ((Throwable)var69).printStackTrace();
- }
- }
-
- String var8 = ((Applet)this).getParameter("files");
- String var10 = ((Applet)this).getParameter("files_file");
- DataInputStream var11 = null;
- if (var10 != null) {
- try {
- URL var14 = new URL(this.searchBase + var10);
- StringBuffer var15 = new StringBuffer(128);
- var11 = new DataInputStream(new BufferedInputStream(var14.openStream()));
-
- for(String var16 = var11.readLine(); var16 != null; var16 = var11.readLine()) {
- var15.append(var16);
- var15.append(' ');
- }
-
- String var9 = var15.toString();
- if (var8 == null) {
- var8 = var9;
- } else {
- var8 = var8 + ',' + var9;
- }
- } catch (MalformedURLException var71) {
- ((Throwable)var71).printStackTrace();
- } catch (IOException var72) {
- ((Throwable)var72).printStackTrace();
- } finally {
- if (var11 != null) {
- try {
- ((FilterInputStream)var11).close();
- } catch (IOException var63) {
- ((Throwable)var63).printStackTrace();
- }
- }
-
- }
- }
-
- if (var8 != null && var8.length() != 0) {
- StringTokenizer var12 = new StringTokenizer(var8, "\n\r \t,", false);
- int var13 = var12.countTokens();
- this.documents = new SearchDocument[var13];
- String var74 = ((Applet)this).getParameter("stop_pattern");
- String var75 = ((Applet)this).getParameter("start_pattern");
- this.numberOfDocuments = 0;
-
- for(int var17 = 0; var17 < var13; ++var17) {
- String var76 = var12.nextToken();
-
- try {
- this.documents[this.numberOfDocuments] = new SearchDocument(var1, var76, var4, var6);
- if (var75 != null) {
- this.documents[this.numberOfDocuments].setStartPattern(var75);
- }
-
- if (var74 != null) {
- this.documents[this.numberOfDocuments].setStopPattern(var74);
- }
-
- ++this.numberOfDocuments;
- } catch (MalformedURLException var68) {
- ((Throwable)var68).printStackTrace();
- }
- }
-
- if (this.numberOfDocuments == 0) {
- System.err.println("SearchToHTML error: Nothing to search.");
- } else {
- if (this.numberOfDocuments < this.documents.length) {
- SearchDocument[] var18 = this.documents;
- this.documents = new SearchDocument[this.numberOfDocuments];
- System.arraycopy(var18, 0, this.documents, 0, this.numberOfDocuments);
- Object var77 = null;
- }
-
- String var78 = ((Applet)this).getParameter("max_num_matches");
- if (var78 == null) {
- this.maxNumOfMatches = this.numberOfDocuments;
- } else {
- try {
- this.maxNumOfMatches = Integer.parseInt(var78);
- if (this.maxNumOfMatches > this.numberOfDocuments) {
- this.maxNumOfMatches = this.numberOfDocuments;
- } else if (this.maxNumOfMatches <= 0) {
- this.maxNumOfMatches = 1;
- }
- } catch (NumberFormatException var67) {
- System.err.println("Invalid value for \"max_num_matches\" parameter");
- ((Throwable)var67).printStackTrace();
- this.maxNumOfMatches = this.numberOfDocuments;
- }
- }
-
- this.target = ((Applet)this).getParameter("target");
- if (this.target == null) {
- this.target = "_top";
- }
-
- this.resultsPage = ((Applet)this).getParameter("resultspage");
- if (this.resultsPage == null) {
- this.resultsPage = "searchresults.html";
- }
-
- this.waitForAll = !"false".equalsIgnoreCase(((Applet)this).getParameter("waitforall"));
- if ("_top".equals(this.target) || "_self".equals(this.target)) {
- this.waitForAll = true;
- }
-
- this.sendContext = !"false".equalsIgnoreCase(((Applet)this).getParameter("send_context"));
- this.sendTitles = !"false".equalsIgnoreCase(((Applet)this).getParameter("send_titles"));
- this.sendDocumentInfo = !"false".equalsIgnoreCase(((Applet)this).getParameter("send_info"));
- this.sendAnchors = !"false".equalsIgnoreCase(((Applet)this).getParameter("send_anchors"));
- this.phraseSearchesOnly = "true".equalsIgnoreCase(((Applet)this).getParameter("phrase_searches_only"));
-
- for(Container var19 = ((Component)this).getParent(); var19 != null; var19 = ((Component)var19).getParent()) {
- if (var19 instanceof Frame) {
- this.frame = (Frame)var19;
- break;
- }
- }
-
- this.search_btn_txt = this.getParameter("search_btn_txt", "Search");
- this.stop_btn_txt = this.getParameter("stop_btn_txt", "Stop");
- String var20 = this.getParameter("xhtml_chkbx_txt", "Exclude HTML");
- String var21 = this.getParameter("exact_chkbx_txt", "Exact matches only");
- String var22 = this.getParameter("match_all_terms_checkbox_txt", "Require all terms");
- String var23 = this.getParameter("searchbox_label_txt", "Search for:");
- Color var24 = getColor(this.getParameter("bgcolor", "gray"));
- if (var24 != null) {
- ((Component)this).setBackground(var24);
- }
-
- Color var25 = getColor(this.getParameter("fgcolor", "black"));
- if (var25 != null) {
- ((Component)this).setForeground(var25);
- }
-
- ((Container)this).setLayout(new BorderLayout());
- Panel var26 = new Panel();
- ((Container)var26).setLayout(new BorderLayout());
- Panel var27 = new Panel();
- ((Container)var27).setLayout(new FlowLayout(0));
- if (!"true".equals(((Applet)this).getParameter("hide_searchbox_label"))) {
- ((Container)var27).add(new Label(var23, 0));
- }
-
- int var28 = 20;
- String var29 = ((Applet)this).getParameter("searchbox_size");
- if (var29 != null) {
- try {
- var28 = Integer.parseInt(var29);
- if (var28 < 5) {
- var28 = 5;
- } else if (var28 > 100) {
- var28 = 100;
- }
- } catch (NumberFormatException var66) {
- System.err.println("Problem with searchbox_size parameter");
- ((Throwable)var66).printStackTrace();
- }
- }
-
- this.searchBox = new TextField(var28);
- Color var30 = getColor(this.getParameter("searchboxbgcolor", "white"));
- if (var30 != null) {
- this.searchBox.setBackground(var30);
- }
-
- Color var31 = getColor(this.getParameter("searchboxfgcolor", "black"));
- if (var31 != null) {
- this.searchBox.setForeground(var31);
- }
-
- String var32 = ((Applet)this).getParameter("startwords");
- if (var32 != null) {
- this.searchBox.setText(var32);
- }
-
- ((Container)var27).add(this.searchBox);
- this.stopStartButton = new Button(this.search_btn_txt);
- Color var33 = getColor(((Applet)this).getParameter("buttonbgcolor"));
- if (var33 != null) {
- this.stopStartButton.setBackground(var33);
- }
-
- Color var34 = getColor(((Applet)this).getParameter("buttonfgcolor"));
- if (var34 != null) {
- this.stopStartButton.setForeground(var34);
- }
-
- if (!"true".equals(((Applet)this).getParameter("hide_button"))) {
- Panel var35 = new Panel();
- ((Container)var35).setLayout(new FlowLayout(2));
- ((Container)var35).add(this.stopStartButton);
- ((Container)var27).add(var35);
- }
-
- ((Container)var26).add("North", var27);
- this.ignoreTagsCheckbox = new Checkbox(var20);
- this.exactCheckbox = new Checkbox(var21);
- this.matchAllTermsCheckbox = new Checkbox(var22);
- boolean var79 = !"true".equalsIgnoreCase(((Applet)this).getParameter("hide_exact_chkbx"));
- boolean var36 = !"true".equalsIgnoreCase(((Applet)this).getParameter("hide_xhtml_chkbx"));
- boolean var37 = "true".equalsIgnoreCase(((Applet)this).getParameter("show_match_all_terms_checkbox")) && !this.phraseSearchesOnly;
- if (var79 || var36 || var37) {
- Color var38 = getColor(((Applet)this).getParameter("checkboxbgcolor"));
- if (var38 != null) {
- this.ignoreTagsCheckbox.setBackground(var38);
- this.exactCheckbox.setBackground(var38);
- this.matchAllTermsCheckbox.setBackground(var38);
- }
-
- Color var39 = getColor(((Applet)this).getParameter("checkboxfgcolor"));
- if (var39 != null) {
- this.ignoreTagsCheckbox.setForeground(var39);
- this.exactCheckbox.setForeground(var39);
- this.matchAllTermsCheckbox.setForeground(var39);
- }
-
- Panel var40 = new Panel();
- ((Container)var40).setLayout(new FlowLayout(0));
- if (var79) {
- ((Container)var40).add(this.exactCheckbox);
- }
-
- if (var36) {
- ((Container)var40).add(this.ignoreTagsCheckbox);
- }
-
- if (var37) {
- ((Container)var40).add(this.matchAllTermsCheckbox);
- }
-
- ((Container)var26).add("Center", var40);
- }
-
- String var80 = ((Applet)this).getParameter("ignore_tags");
- if (var80 != null) {
- if ("true".equals(var80)) {
- this.ignoreTagsCheckbox.setState(true);
- }
- } else if ("true".equals(((Applet)this).getParameter("xhtml_chkbx_checked"))) {
- this.ignoreTagsCheckbox.setState(true);
- }
-
- String var81 = ((Applet)this).getParameter("exact_matches_only");
- if (var81 != null) {
- if ("true".equalsIgnoreCase(var81)) {
- this.exactCheckbox.setState(true);
- }
- } else if ("true".equals(((Applet)this).getParameter("exact_chkbx_checked"))) {
- this.exactCheckbox.setState(true);
- }
-
- if ("true".equalsIgnoreCase(((Applet)this).getParameter("match_all_terms"))) {
- this.matchAllTermsCheckbox.setState(true);
- }
-
- this.displayProgressBar = !"true".equals(((Applet)this).getParameter("hide_progress_bar"));
- this.progressBarHasBeenUsed = false;
- if (this.displayProgressBar) {
- Panel var82 = new Panel();
- ((Container)var82).setLayout(new FlowLayout(0));
- Color var41 = getColor(this.getParameter("progress_bar_completed_color", "blue"));
- Color var42 = getColor(this.getParameter("progress_bar_remaining_color", "cyan"));
- Color var43 = getColor(this.getParameter("progress_bar_text_color", "black"));
- String var44 = this.getParameter("progress_bar_message", "Searching... ");
- this.progressBar = new ProgressBar(this.numberOfDocuments, var41, var42, var43, var44);
- Dimension var45 = ((Component)this).size();
- String var47 = ((Applet)this).getParameter("progress_bar_height");
- int var46;
- if (var47 == null) {
- var46 = 20;
- } else {
- try {
- var46 = Integer.parseInt(var47);
- if (var46 <= 0) {
- var46 = 20;
- } else if (var46 > var45.height) {
- var46 = var45.height;
- }
- } catch (NumberFormatException var65) {
- System.err.println("Problem with progress_bar_height parameter");
- ((Throwable)var65).printStackTrace();
- var46 = 20;
- }
- }
-
- String var49 = ((Applet)this).getParameter("progress_bar_width");
- int var48;
- if (var49 == null) {
- var48 = var45.width - 20;
- } else {
- try {
- var48 = Integer.parseInt(var49);
- if (var48 <= 0) {
- var48 = var45.width - 20;
- } else if (var48 > var45.width) {
- var48 = var45.width;
- }
- } catch (NumberFormatException var64) {
- System.err.println("Problem with progress_bar_width parameter");
- ((Throwable)var64).printStackTrace();
- var48 = var45.width - 20;
- }
- }
-
- this.progressBar.resize(var48, var46);
- this.progressBar.setPercentMessageVisible(!"true".equals(((Applet)this).getParameter("hide_progress_bar_message")));
- ((Container)var82).add(this.progressBar);
- ((Container)var26).add("South", var82);
- this.progressBar.setProgressBarVisible(false);
- } else {
- this.progressBar = null;
- }
-
- ((Container)this).add("Center", var26);
- this.searchBox.selectAll();
- this.searchBox.requestFocus();
- ((Container)this).validate();
- }
- } else {
- this.displayMessage = true;
- System.err.println("SearchToHTML Applet can't start");
- System.err.println("No files to search");
- this.message = "Can't continue: no files to search.";
- ((Component)this).repaint();
- }
- }
-
- public final String getAppletInfo() {
- return appletInfo;
- }
-
- public final String[][] getParameterInfo() {
- return parameterInfo;
- }
-
- public static final Color getColor(String var0) {
- if (var0 == null) {
- return null;
- } else {
- var0 = var0.toLowerCase();
- if (var0.startsWith("#")) {
- if (var0.length() != 7) {
- return null;
- } else {
- try {
- int var1 = Integer.parseInt(var0.substring(1, 7), 16);
- return new Color(var1);
- } catch (NumberFormatException var2) {
- return null;
- }
- }
- } else if ("black".equalsIgnoreCase(var0)) {
- return Color.black;
- } else if ("blue".equalsIgnoreCase(var0)) {
- return Color.blue;
- } else if ("darkblue".equalsIgnoreCase(var0)) {
- return Color.blue.darker().darker().darker();
- } else if ("lightblue".equalsIgnoreCase(var0)) {
- return Color.blue.brighter().brighter().brighter();
- } else if ("cyan".equalsIgnoreCase(var0)) {
- return Color.cyan;
- } else if ("darkgray".equalsIgnoreCase(var0)) {
- return Color.darkGray;
- } else if ("lightgray".equalsIgnoreCase(var0)) {
- return Color.lightGray;
- } else if ("green".equalsIgnoreCase(var0)) {
- return Color.green;
- } else if ("gray".equalsIgnoreCase(var0)) {
- return Color.gray;
- } else if ("magenta".equalsIgnoreCase(var0)) {
- return Color.magenta;
- } else if ("orange".equalsIgnoreCase(var0)) {
- return Color.orange;
- } else if ("pink".equalsIgnoreCase(var0)) {
- return Color.pink;
- } else if ("red".equalsIgnoreCase(var0)) {
- return Color.red;
- } else if ("white".equalsIgnoreCase(var0)) {
- return Color.white;
- } else {
- return "yellow".equalsIgnoreCase(var0) ? Color.yellow : Color.getColor(var0);
- }
- }
- }
-
- public final String getParameter(String var1, String var2) {
- String var3 = ((Applet)this).getParameter(var1);
- return var3 != null ? var3 : var2;
- }
-
- public static final String makeHTMLSafe(String var0) {
- StringBuffer var1 = new StringBuffer();
- int var3 = var0.length();
-
- for(int var4 = 0; var4 < var3; ++var4) {
- char var2 = var0.charAt(var4);
- if (var2 == '<') {
- var1.append("<");
- } else if (var2 == '>') {
- var1.append(">");
- } else if (var2 == '&') {
- var1.append("&");
- } else {
- var1.append(var2);
- }
- }
-
- return var1.toString();
- }
-
- public static final String replaceChar(String var0, char var1, String var2) {
- if (var0.indexOf(var1) < 0) {
- return var0;
- } else {
- StringBuffer var3 = new StringBuffer();
- int var5 = var0.length();
-
- for(int var6 = 0; var6 < var5; ++var6) {
- char var4 = var0.charAt(var6);
- if (var4 == var1) {
- var3.append(var2);
- } else {
- var3.append(var4);
- }
- }
-
- return var3.toString();
- }
- }
-
- public Insets insets() {
- return this.insets;
- }
-
- public void paint(Graphics var1) {
- if (this.displayMessage) {
- var1.drawString(this.message, 3, ((Component)this).size().height / 2);
- }
-
- }
-
- public boolean keyUp(Event var1, int var2) {
- if (var2 == 46 && (var1.modifiers & 4) != 0 || var2 == 27) {
- this.stopStartButton.disable();
- this.searchBox.disable();
- this.disableCheckboxes();
- this.stopSearching();
- synchronized(this){}
-
- try {
- if (this.frame != null) {
- this.frame.setCursor(0);
- }
-
- this.stopStartButton.setLabel(this.search_btn_txt);
- this.stopStartButton.enable();
- this.searchBox.enable();
- this.searchBox.selectAll();
- this.searchBox.requestFocus();
- this.enableCheckboxes();
- } catch (Throwable var5) {
- throw var5;
- }
- }
-
- return false;
- }
-
- public boolean action(Event var1, Object var2) {
- if (var1.target == this.searchBox) {
- this.searchBox.disable();
- this.stopStartButton.disable();
- this.disableCheckboxes();
- this.stopSearching();
- synchronized(this){}
-
- try {
- if (this.frame != null) {
- this.frame.setCursor(3);
- }
-
- this.searchBox.disable();
- this.stopStartButton.setLabel(this.stop_btn_txt);
- this.stopStartButton.enable();
- this.searching = true;
- if (this.searchThread == null) {
- this.searchThread = new Thread(this, "SearchToHTML");
- this.searchThread.start();
- }
-
- try {
- this.notify();
- } catch (IllegalMonitorStateException var22) {
- ((Throwable)var22).printStackTrace();
- }
- } catch (Throwable var25) {
- throw var25;
- }
- } else if (var1.target == this.stopStartButton) {
- this.stopStartButton.disable();
- this.searchBox.disable();
- this.disableCheckboxes();
- this.stopSearching();
- if (this.search_btn_txt.equals(this.stopStartButton.getLabel())) {
- synchronized(this){}
-
- try {
- if (this.frame != null) {
- this.frame.setCursor(3);
- }
-
- this.searchBox.disable();
- this.stopStartButton.setLabel(this.stop_btn_txt);
- this.searching = true;
- if (this.searchThread == null) {
- this.searchThread = new Thread(this, "SearchToHTML");
- this.searchThread.start();
- }
-
- try {
- this.notify();
- } catch (IllegalMonitorStateException var21) {
- ((Throwable)var21).printStackTrace();
- }
- } catch (Throwable var23) {
- throw var23;
- }
- } else {
- synchronized(this){}
-
- try {
- if (this.frame != null) {
- this.frame.setCursor(0);
- }
-
- this.stopStartButton.setLabel(this.search_btn_txt);
- this.searchBox.enable();
- this.searchBox.selectAll();
- this.searchBox.requestFocus();
- this.enableCheckboxes();
- } catch (Throwable var24) {
- throw var24;
- }
- }
-
- this.stopStartButton.enable();
- }
-
- return false;
- }
-
- public synchronized void run() {
- Thread var1 = Thread.currentThread();
-
- while(this.searchThread == var1) {
- if (this.searching) {
- StringBuffer var2 = new StringBuffer();
- boolean var3 = this.ignoreTagsCheckbox.getState();
- boolean var4 = this.exactCheckbox.getState();
- String var5 = this.searchBox.getText();
- if ("*version*".equals(var5)) {
- System.out.println(this.getAppletInfo());
- }
-
- var2.append(this.resultsPage);
- var2.append('?');
- var2.append(URLEncoder.encode(makeHTMLSafe(var5)));
- var2.append(',');
- if (var4) {
- var2.append('y');
- } else {
- var2.append('n');
- }
-
- if (var3) {
- var2.append('y');
- } else {
- var2.append('n');
- }
-
- var5 = var5.toLowerCase();
- String[] var6;
- if (this.phraseSearchesOnly) {
- var6 = new String[]{var5};
- } else {
- var6 = parseSearchTerms(var5);
- }
-
- if (this.displayProgressBar) {
- if (!this.progressBarHasBeenUsed) {
- this.progressBarHasBeenUsed = true;
- this.progressBar.setProgressBarVisible(true);
- }
-
- this.progressBar.setMaximumValue(this.numberOfDocuments);
- this.progressBar.reset();
- }
-
- SearchDocument[] var7 = new SearchDocument[this.numberOfDocuments];
- int var8 = 0;
- boolean var9 = false;
-
- for(int var10 = 0; var10 < this.documents.length && this.searching && var8 < this.maxNumOfMatches; ++var10) {
- if (!this.documents[var10].isErrored()) {
- ((Applet)this).showStatus(this.documents[var10].getRelativeURL());
-
- try {
- var9 = this.documents[var10].searchFor(var6, var4, var3, this.matchAllTermsCheckbox.getState());
- if (var9) {
- var7[var8] = this.documents[var10];
- ++var8;
- if (this.displayProgressBar) {
- this.progressBar.changeBy(1);
- }
- } else if (!this.documents[var10].isErrored()) {
- if (this.displayProgressBar) {
- this.progressBar.changeBy(1);
- }
- } else {
- --this.numberOfDocuments;
- if (this.displayProgressBar) {
- this.progressBar.setMaximumValue(this.numberOfDocuments);
- }
- }
- } catch (InterruptedException var17) {
- this.searching = false;
- }
- }
- }
-
- if (this.searching) {
- for(int var11 = 0; var11 < var8; ++var11) {
- SearchDocument var12 = var7[var11];
- String var13 = var12.getDocumentTitle();
- String var14 = var12.getContext();
- String var15 = var12.getNearestAnchor();
- String var16 = var12.getDocumentInfo();
- var2.append(URLEncoder.encode(var12.getRelativeURL()));
- var2.append(':');
- if (var13 != null && this.sendTitles) {
- var2.append(URLEncoder.encode(var13));
- }
-
- var2.append(':');
- if (var15 != null && this.sendAnchors) {
- var2.append(URLEncoder.encode(var15));
- }
-
- var2.append(':');
- if (var16 != null && this.sendDocumentInfo) {
- var2.append(replaceChar(URLEncoder.encode(makeHTMLSafe(var16)), ',', "%2c"));
- }
-
- var2.append(':');
- if (var14 != null && this.sendContext) {
- var2.append(URLEncoder.encode(var14));
- }
-
- var2.append(',');
- }
-
- String var22 = var2.toString();
- var22 = replaceChar(var22, '+', "%20");
-
- try {
- URL var24 = new URL(this.searchBase + var22);
- ((Applet)this).getAppletContext().showDocument(var24, this.target);
- } catch (MalformedURLException var19) {
- ((Throwable)var19).printStackTrace();
- }
- }
- }
-
- if (this.searching) {
- if (this.frame != null) {
- this.frame.setCursor(0);
- }
-
- this.stopStartButton.setLabel(this.search_btn_txt);
- this.searchBox.enable();
- this.searchBox.selectAll();
- this.searchBox.requestFocus();
- this.enableCheckboxes();
- this.searching = false;
- }
-
- try {
- this.wait();
- } catch (InterruptedException var18) {
- ((Throwable)var18).printStackTrace();
- }
- }
-
- }
-
- private void disableCheckboxes() {
- this.ignoreTagsCheckbox.disable();
- this.exactCheckbox.disable();
- this.matchAllTermsCheckbox.disable();
- }
-
- private void enableCheckboxes() {
- this.ignoreTagsCheckbox.enable();
- this.exactCheckbox.enable();
- this.matchAllTermsCheckbox.enable();
- }
-
- private void stopSearching() {
- this.searching = false;
-
- for(int var1 = 0; var1 < this.documents.length; ++var1) {
- this.documents[var1].interruptSearch();
- }
-
- }
-
- public void stop() {
- this.stopSearching();
- synchronized(this){}
-
- try {
- this.searchThread = null;
-
- try {
- this.notify();
- } catch (IllegalMonitorStateException var6) {
- ((Throwable)var6).printStackTrace();
- }
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- private static final String[] parseSearchTerms(String var0) {
- StringTokenizer var1 = new StringTokenizer(var0, "\" \t\r\n,", true);
- int var2 = var1.countTokens();
- String[] var3 = new String[var2];
- int var5 = 0;
- StringBuffer var6 = new StringBuffer();
- boolean var8 = false;
-
- while(var1.hasMoreTokens()) {
- String var7 = var1.nextToken();
- if ("\" \t\r\n,".indexOf(var7) != -1) {
- if ("\"".equals(var7)) {
- var8 = !var8;
- if (var8) {
- var6.setLength(0);
- } else if (var6.length() != 0) {
- var3[var5] = var6.toString();
- var6.setLength(0);
- ++var5;
- }
- } else if (var8) {
- var6.append(var7);
- }
- } else if (!var8) {
- var3[var5] = var7;
- var6.setLength(0);
- ++var5;
- } else if (var8) {
- var6.append(var7);
- }
- }
-
- if (var6.length() != 0) {
- var3[var5] = var6.toString();
- ++var5;
- }
-
- String[] var4 = new String[var5];
- System.arraycopy(var3, 0, var4, 0, var5);
- return var4;
- }
- }
-